package com.ruoyi.common.core.page;

import com.ruoyi.common.utils.StringUtils;

/**
 * 分页数据
 *
 * @author ruoyi
 */
public class PageDomain
{
    /** 当前记录起始索引 */
    private Integer pageNum;

    /** 每页显示记录数 */
    private Integer pageSize;

    /** 排序列 */
    private String orderByColumn;

    /** 排序的方向desc或者asc */
    private String isAsc = "asc";

    /** 分页参数合理化 */
    private Boolean reasonable = true;

    public String getOrderBy()
    {
        if (StringUtils.isEmpty(orderByColumn))
        {
            return "";
        }
        String[] columnArray = orderByColumn.split(",");
        if(StringUtils.isNotEmpty(isAsc)) {
            String[] isAscArray = isAsc.split(",");
            if(isAscArray.length == columnArray.length) {
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < columnArray.length; i++) {
                    sb.append(StringUtils.toUnderScoreCase(columnArray[i])).append(" ").append(isAscArray[i]).append(",");
                }
                sb.deleteCharAt(sb.length() - 1);
                return sb.toString();
            } else if(isAscArray.length == 1) {
                StringBuilder sb = new StringBuilder();
                for (String s : columnArray) {
                    sb.append(StringUtils.toUnderScoreCase(s)).append(" ").append(isAsc).append(",");
                }
                sb.deleteCharAt(sb.length() - 1);
                return sb.toString();
            } else {
                return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc;
            }
        } else {
            return StringUtils.toUnderScoreCase(orderByColumn);
        }
    }

    public Integer getPageNum()
    {
        return pageNum;
    }

    public void setPageNum(Integer pageNum)
    {
        this.pageNum = pageNum;
    }

    public Integer getPageSize()
    {
        return pageSize;
    }

    public void setPageSize(Integer pageSize)
    {
        this.pageSize = pageSize;
    }

    public String getOrderByColumn()
    {
        return orderByColumn;
    }

    public void setOrderByColumn(String orderByColumn)
    {
        this.orderByColumn = orderByColumn;
    }

    public String getIsAsc()
    {
        return isAsc;
    }

    public void setIsAsc(String isAsc)
    {
        this.isAsc = isAsc;
    }

    public Boolean getReasonable()
    {
        if (StringUtils.isNull(reasonable))
        {
            return Boolean.TRUE;
        }
        return reasonable;
    }

    public void setReasonable(Boolean reasonable)
    {
        this.reasonable = reasonable;
    }
}
